package MediciADistanza.Boundary.user.Module;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;

import MediciADistanza.Entity.Specializzazione;
import MediciADistanza.Control.ModificaSpecializzazioniControl;



/**
 * Modulo di modifica delle specializzazioni
 * 
 * <p>Semi implementato</p>
 * 
 * @author Andrea Iann&igrave;
 */
public class SpecializzazioniBND extends Modulo {// da rinominare!!!!
	/**
	 * 
	 */
	private static final long serialVersionUID = -7490009914686692188L;
	/**
	 * Combobox di visualizzazione specializzazioni
	 */
	private JComboBox<Specializzazione> specsComboBox;
	/**
	 * Label di identificazione nome specializzazione
	 */
	private JLabel nomeSpecLabel;
	/**
	 * Campo in cui viene mostrato e modificato il nome della specilizzazione
	 */
	private JTextField nomeSpecField;
	
	/**
	 * Crea e imposta l'interfaccia di visualizzione delle specializzazioni
	 * 
	 * @param control			Control del modulo che instanzia la classe
	 * @param specializzazioni	Lista delle specializzazioni da visualizzare
	 */
	public SpecializzazioniBND(ModificaSpecializzazioniControl control, List<Specializzazione> specializzazioni) {
		super(control);
		
		specsComboBox = new JComboBox<Specializzazione>((Specializzazione[]) specializzazioni.toArray());
		nomeSpecLabel = new JLabel("Nome:");
		nomeSpecField = new JTextField();
		
		this.getContentPane().setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridwidth = 2;
		c.gridy = 0;
		
		this.getContentPane().add(specsComboBox,c);
		
		specsComboBox.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				itemSelected();
			}
		});
		
		c.gridwidth = 1;
		c.gridy = 1;
		this.getContentPane().add(nomeSpecLabel,c);
		this.getContentPane().add(nomeSpecField,c);
		c.gridy = 2;
		this.getContentPane().add(invia,c);
		this.getContentPane().add(esci,c);
	}
	/**
	 * Cambia il nome di una specializzazione nella lista
	 * @param nome		Nuovo nome
	 */
	public void setNomeSpec(String nome) {
		nomeSpecField.setText(nome);
	}
	/**
	 * Restituisce il nome di una specializzazione inserito dall'utente
	 * @return Nome inserito dall'utente
	 */
	public String getNomeSpec() {
		return nomeSpecField.getText();
	 
	}
	/**
	 * Aggiorna la lista delle specializzazioni
	 * @param specializzazioni	Nuova Lista specializzazioni
	 */
	public void setListaSpecs(List<Specializzazione> specializzazioni) {
		specsComboBox = new JComboBox<Specializzazione>((Specializzazione[]) specializzazioni.toArray());;
		
	}
	/**
	 * Restituisce la specializzazione attualmente selezionata
	 */
	private void itemSelected () {
		((ModificaSpecializzazioniControl)this.moduleControl).specSelezionata((Specializzazione) specsComboBox.getSelectedItem());
	}
	@Override
	protected boolean validateInput() {
		// TODO Auto-generated method stub
		return true;
	}
	 
}
 
